package com.example.code2022;

/**
 * @author: dangwen
 * @createDate: 2022/4/22
 * 67. 二进制求和
 * 给你两个二进制字符串，返回它们的和（用二进制表示）。
 * 输入为 非空 字符串且只包含数字 1 和 0。
 */
public class P67 {
    public static void main(String[] args) {
        String a = "11", b = "1";
//        String a = "1010", b = "1011";
        System.out.println(plusString(a, b));
    }
    public static String plusString(String a, String b){
        int i = a.length() - 1;
        int j = b.length() - 1;
        int carry = 0;
        StringBuilder sb = new StringBuilder();
        while (i >=0 || j >= 0){
            int x = i >= 0 ? a.charAt(i) - '0' : 0;
            int y = j >= 0 ? b.charAt(j) - '0' : 0;
            int sum = x + y + carry;
            sb.append(sum % 2);
            carry = sum / 2;
            i--;
            j--;
        }
        if (carry != 0){
            sb.append(carry);
        }
        return sb.reverse().toString();
    }
}
